package cn.itcast.nio.c1;

import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class TestByteBuffer {
    public static void main(String[] args) {
        //FileChannel 代表一个数据的读写通道
        //1.获取Channel可以通过输入输出流 2.RandomAccessFile
        try (FileChannel channel = new FileInputStream("data.txt").getChannel()) {
            //准备缓冲区
            //划分一块内存作为缓冲区
            ByteBuffer buffer = ByteBuffer.allocate(10);
            //从channel 中读取数据 写入到buffer
            while(true){
                int len = channel.read(buffer);
                // -1 等于没有东西可以继续读了
                if(len == -1){
                    break;
                }
                //打印buffer的内容
                //切换至读模式
                buffer.flip();
                //如果有就继续读
                while(buffer.hasRemaining()){
                    //每次读一个字节
                    byte b = buffer.get();
                    System.out.println((char) b);
                }
                //切换为写模式
                buffer.clear();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
